package com.sinosoft.ebusiness.domain.elementManage;
// 采用工具 Hibernate Tools 3.2.4.GA (sinosoft version) 生成，请勿手工修改。

import java.util.List;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.sinosoft.ebusiness.domain.elementManage.GeProduct;
import com.sinosoft.ebusiness.domain.elementManage.GeProductStepId;
import com.sinosoft.ebusiness.domain.elementManage.GeProductStepRule;
import com.sinosoft.ebusiness.domain.elementManage.GeProductStepTemplate;

/**
 * POJO类GeProductStep
 */
@Entity
@Table(name = "GE_PRODUCT_STEP")
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
public class GeProductStep implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 5753883488227343694L;

	/** 属性ID */
	private GeProductStepId id;

	/** 属性geProduct */
	private GeProduct geProduct;

	/** 属性processcname */
	private String processcname;

	/** 属性processename */
	private String processename;

	/** 属性processtname */
	private String processtname;

	/** 属性processtype */
	private String processtype;

	/** 属性downloadterms */
	private String downloadterms;

	/** 属性selectration */
	private String selectration;

	/** 属性geProductStepTemplate */
	private GeProductStepTemplate geProductStepTemplate;
	
	private List<GeProductStepRule> geproductStepRuleList;

	/**
	 * 类GeProductStep的默认构造方法
	 */
	public GeProductStep() {
	}

	/**
	 * 属性ID的getter方法
	 */
	@EmbeddedId
	@AttributeOverrides({
			@AttributeOverride(name = "processcode", column = @Column(name = "PROCESSCODE")),
			@AttributeOverride(name = "productcode", column = @Column(name = "PRODUCTCODE")),
			@AttributeOverride(name = "version", column = @Column(name = "VERSION")) })
	public GeProductStepId getId() {
		return this.id;
	}

	/**
	 * 属性ID的setter方法
	 */
	public void setId(GeProductStepId id) {
		this.id = id;
	}

	/**
	 * 属性geProduct的getter方法
	 */
	@JsonBackReference
	@JsonIgnore
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumns({
			@JoinColumn(name = "PRODUCTCODE", referencedColumnName = "PRODUCTCODE", nullable = false, insertable = false, updatable = false),
			@JoinColumn(name = "VERSION", referencedColumnName = "VERSION", nullable = false, insertable = false, updatable = false) })
	public GeProduct getGeProduct() {
		return this.geProduct;
	}

	/**
	 * 属性geProduct的setter方法
	 */
	public void setGeProduct(GeProduct geProduct) {
		this.geProduct = geProduct;
	}

	/**
	 * 属性processcname的getter方法
	 */

	@Column(name = "PROCESSCNAME")
	public String getProcesscname() {
		return this.processcname;
	}

	/**
	 * 属性processcname的setter方法
	 */
	public void setProcesscname(String processcname) {
		this.processcname = processcname;
	}

	/**
	 * 属性processename的getter方法
	 */

	@Column(name = "PROCESSENAME")
	public String getProcessename() {
		return this.processename;
	}

	/**
	 * 属性processename的setter方法
	 */
	public void setProcessename(String processename) {
		this.processename = processename;
	}

	/**
	 * 属性processtname的getter方法
	 */

	@Column(name = "PROCESSTNAME")
	public String getProcesstname() {
		return this.processtname;
	}

	/**
	 * 属性processtname的setter方法
	 */
	public void setProcesstname(String processtname) {
		this.processtname = processtname;
	}

	/**
	 * 属性processtype的getter方法
	 */

	@Column(name = "PROCESSTYPE")
	public String getProcesstype() {
		return this.processtype;
	}

	/**
	 * 属性processtype的setter方法
	 */
	public void setProcesstype(String processtype) {
		this.processtype = processtype;
	}

	/**
	 * 属性downloadterms的getter方法
	 */

	@Column(name = "DOWNLOADTERMS")
	public String getDownloadterms() {
		return this.downloadterms;
	}

	/**
	 * 属性downloadterms的setter方法
	 */
	public void setDownloadterms(String downloadterms) {
		this.downloadterms = downloadterms;
	}

	/**
	 * 属性selectration的getter方法
	 */

	@Column(name = "SELECTRATION")
	public String getSelectration() {
		return this.selectration;
	}

	/**
	 * 属性selectration的setter方法
	 */
	public void setSelectration(String selectration) {
		this.selectration = selectration;
	}

	/**
	 * 属性geProductStepTemplate的getter方法
	 */
	@OneToOne(fetch = FetchType.LAZY, mappedBy = "geProductStep",cascade=CascadeType.ALL)
	public GeProductStepTemplate getGeProductStepTemplate() {
		return this.geProductStepTemplate;
	}

	/**
	 * 属性geProductStepTemplate的setter方法
	 */
	public void setGeProductStepTemplate(
			GeProductStepTemplate geProductStepTemplate) {
		this.geProductStepTemplate = geProductStepTemplate;
	}

	@Transient
	public List<GeProductStepRule> getGeproductStepRuleList() {
		return geproductStepRuleList;
	}

	public void setGeproductStepRuleList(
			List<GeProductStepRule> geproductStepRuleList) {
		this.geproductStepRuleList = geproductStepRuleList;
	}

}
